package com.arch.dev.client;

import java.util.Date;
import java.util.List;
import java.util.Set;

import com.arch.dev.client.vo.BudgetVO;
import com.arch.dev.client.vo.CatagoryVO;
import com.arch.dev.client.vo.MonthVO;
import com.arch.dev.client.vo.PdfVO;
import com.arch.dev.client.vo.UserVO;
import com.arch.dev.client.vo.YearVO;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath("springGwtServices/budgetService")
public interface GreetingService extends RemoteService {
	List<BudgetVO> getAllValues() throws Exception;

	void persistValues(BudgetVO budgetVO) throws Exception;

	List<CatagoryVO> getAllCatagories() throws Exception;

	void deleteValues(Set<BudgetVO> budgetVOs) throws Exception;

	public List<BudgetVO> getMonthlyConsolidatedData(List<BudgetVO> budgetVOs)
			throws Exception;

	public List<BudgetVO> getMonthlyDataForYear(int year, int month, boolean isConsolidated)
			throws Exception;

	public Set<YearVO> getDateData() throws Exception;

	public PdfVO generatePDF() throws Exception;

	public List<PdfVO> getAllPDFValues() throws Exception;

	public List<BudgetVO> getDataForDate(Date selectedDate) throws Exception;

	public List<BudgetVO> getYearlyData(int year, boolean isConsolidated) throws Exception;

	public PdfVO savePDF(PdfVO pdfVO) throws Exception;

	public void persistCatagoryValues(CatagoryVO catagoryVO) throws Exception;

	public void deleteCatagoryValues(Set<CatagoryVO> catagoryVOs)
			throws Exception;

	void deletePDF(Set<PdfVO> pdfVOs) throws Exception;
	
	void processDataFromExcel(String excelFileName) throws Exception;
	
	public List<UserVO> getAllUserValues() throws Exception;

	public void persistUserValues(UserVO userVO) throws Exception;
	
	public void deleteUserValues(Set<UserVO> userVOs) throws Exception;
	
	public List<BudgetVO> getCatagoryWiseDataForMonth(int year, int month, boolean isConsolidated) throws Exception;
	
	public List<List<BudgetVO>> getMonthlyCatagoryWiseDataForYear(int year, List<MonthVO> monthVOList, boolean isConsolidated) throws Exception;

}
